# import matplotlib.pyplot as plt
# import pandas as pd
# df = pd.read_excel('产品销售表.xlsx',sheet_name=['第1分店','第2分店','第3分店'])
# df_list=[]
# df_list.append(df['第1分店'])
# df_list.append(df['第2分店'])
# df_list.append(df['第3分店'])
# width=0.3
# for i in range(len(df_list)):  # i=0,1,2 分别对应第1、2、3分店
#     df_temp = df_list[i]  # 提取当前分店的数据（如i=0时是第1分店）
#
#     # 数据清洗1：删除“数量”列有缺失值的行
#     df_temp.dropna(axis=0, subset=['数量'], inplace=True)
#     # 解释：
#     # - dropna：删除缺失值（NaN）
#     # - axis=0：按行删除（如果某行的“数量”是缺失值，就删掉这一行）
#     # - subset=['数量']：只检查“数量”列的缺失值（其他列缺失不影响）
#     # - inplace=True：直接在原表格上修改（不创建新表格）
#
#     # 数据清洗2：删除完全重复的行
#     df_temp.drop_duplicates(inplace=True)
#     # 解释：如果表格中存在完全一样的行（可能是录入错误重复），就只保留一行。
#
#     # 按季度分组，计算销售额总和
#     df_temp = df_temp.groupby('季度').agg('sum')
#     # 解释：
#     # - groupby('季度')：按“季度”列的值（如1、2、3、4）分组，将同一季度的行归为一组。
#     # - agg('sum')：对每组内的数值列（如“销售额（万元）”“数量”）求和。
#     # 结果：得到一个新表格，索引是季度（1-4），列是各数值列的总和（我们只需要“销售额”）。
#
#     # 准备x轴和y轴数据
#     x = df_temp.index  # x轴：季度（1、2、3、4）
#     height = df_temp['销售额（万元）']  # y轴：对应季度的销售额总和
#
#     # 绘制柱状图（核心！）
#     plt.bar(x + width * i, height, width)
#     # 关键逻辑：通过x轴偏移实现“分组并排”
#     # - 第1分店（i=0）：x坐标 = 季度 + 0.3*0 → 1,2,3,4
#     # - 第2分店（i=1）：x坐标 = 季度 + 0.3*1 → 1.3,2.3,3.3,4.3
#     # - 第3分店（i=2）：x坐标 = 季度 + 0.3*2 → 1.6,2.6,3.6,4.6
#     # 这样3个分店的柱子在同一季度并排显示，不重叠。
# # for i in range(len(df_list)):
# #     df_temp = df_list[i]
# #     df_temp.dropna(axis=0,subset=['数量'],inplace=True)
# #     df_temp.drop_duplicates(inplace=True)
# #     df_temp = df_temp.groupby('季度').agg('sum')
# #     x = df_temp.index
# #     height = df_temp['销售额（万元）']
# #     plt.bar(x+width*i,height,width)
# plt.rcParams['font.sans-serif']='SimHei'
# plt.ylabel('销售额（万元）')
# plt.legend(['第1分店','第2分店','第3分店'])
# plt.xticks([1,2,3,4],['第1季度','第2季度','第3季度','第4季度'])
# plt.title('每个季度不同分店销售额柱状图')
# plt.show()
#
#
#
#
#
#
#
#
#
#
#
#
#
# import matplotlib.pyplot as plt
# import pandas as pd
#
# # 1. 准备数据（可以从Excel读取，这里先用简单数据演示）
# # 数据：学科及其对应的成绩
# data = {
#     '学科': ['语文', '数学', '英语', '物理', '化学'],
#     '成绩': [92, 88, 95, 78, 85]
# }
# df = pd.DataFrame(data)  # 转换为DataFrame，方便处理
#
#
# # 2. 设置中文显示（避免乱码）
# plt.rcParams['font.sans-serif'] = 'SimHei'  # 使用黑体显示中文
# # 3. 绘制柱状图
# plt.figure(figsize=(8, 5))  # 设置画布大小（宽8英寸，高5英寸）
#
#
#
# # 核心绘图：x轴为学科，y轴为成绩，设置柱子颜色和边缘
# plt.bar(
#     x=df['学科'],  # x轴数据（学科名称）
#     height=df['成绩'],  # y轴数据（成绩）
#     color='skyblue',  # 柱子颜色（天蓝色）
#     edgecolor='black'  # 柱子边缘颜色（黑色，便于区分）
# )
# # plt.barh(
# #     y=df['学科'],  # x轴数据（学科名称）
# #     width=df['成绩'],  # y轴数据（成绩）
# #     color='skyblue',  # 柱子颜色（天蓝色）
# #     edgecolor='black'  # 柱子边缘颜色（黑色，便于区分）
# # )
#
#
#
#
# # 5. 显示图表
# plt.tight_layout()  # 自动调整布局，避免标签被截断
# plt.show()
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
import matplotlib.pyplot as plt
import pandas as pd
# plt.rcParams['font.sans-serif'] = 'SimHei'
# plt.rcParams['axes.unicode_minus'] = False
# df = pd.read_excel('学生各学期成绩表.xlsx', index_col=0)
# data = df.agg('mean', numeric_only=True)
# plt.pie(data, labels=data.index, autopct='%.2f%%')
# plt.title('各科平均成绩占比饼状图')
# plt.show()
df = pd.read_excel('营销和产品销量表.xlsx', index_col=0)
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['figure.figsize']=(8,5)
x=df['展现量']
y1=df['点击量']
plt.subplot(2,2,1)
plt.scatter(x,y1)
plt.legend(('展现量和点击量,'),loc='lower right')
y2=df['订单金额']
plt.subplot(2,2,2)
plt.scatter(x,y2,s=20,c='r',marker='*')
plt.legend(('展现量与订单金额',),loc='lower right')
y3=df['加购数']
plt.subplot(2,2,3)
plt.scatter(x,y3,s=25,c='g',marker='d')
plt.legend(('展现量与加购量',),loc='lower right')
y4=df['下单新客数']
plt.subplot(2,2,4)
plt.scatter(x,y4,s=30,c='b',marker='+')
plt.legend(('展现量与下单新客数',),loc='lower right')
plt.show()
















import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_excel('超市销售信息表.xlsx')
plt.boxplot(df['购物体验评分'],positions=[1])
plt.boxplot(df['购物体验评分'],positions=[2],notch=True,whis=0.5,patch_artist=True,boxprops={'facecolor':'r'},showmeans=True)
Q1 = df['购物体验评分'].describe()['75%']
Q2 = df['购物体验评分'].describe()['25%']
up_limit = Q1+(Q1-Q2)*0.5
low_limit = Q2-(Q1-Q2)*0.5
val = df['购物体验评分'][(df['购物体验评分']>up_limit)  |  (df['购物体验评分'] <low_limit)]
print('购物体验评分的统计值:\n',df['购物体验评分'].describe())
print('whis为0.5时异常值:\n',val)
plt.show()


